package cn.iocoder.yudao.module.pay.api.order.dto;

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 支付单创建 Request DTO
 */
@Data
public class PayOrderCreateReqDTO implements Serializable {

    public static final int SUBJECT_MAX_LENGTH = 32;

    /**
     * 应用标识
     */
    @NotNull(message = "应用标识不能为空")
    private String appKey;

    /**
     * 商户订单编号
     */
    @NotEmpty(message = "商户订单编号不能为空")
    private String orderNo;
    private Long userId;
    private Integer orderType;


    // ========== 订单相关字段 ==========

    private BigDecimal totalPrice;
    private BigDecimal deposit;
    private BigDecimal depositAdd;
    private BigDecimal delayPrice;
    private BigDecimal processPrice;
    private BigDecimal additionalPrice;
    private BigDecimal deductPrice;

    private BigDecimal weight;
    private BigDecimal exchangeWeight;
    private BigDecimal metalPrice;
    /**
     * 支付金额
     */
    @NotNull(message = "支付金额不能为空")
    private BigDecimal price;
    private Integer payType;

    /**
     * 支付过期时间
     */
    @NotNull(message = "支付过期时间不能为空")
    private LocalDateTime expireTime;

    private Boolean autoPay;
    private Boolean isViolate;
    private List<String> payPicUrl;
    public Long collectInfoId;
    public String channelCode;
}
